// new.js
import { getPeopleList } from '../../../utils/people'
import { getSubRegion } from '../../../utils/get_region';
Page({
  data: {
    // 搜索相关
    searchKeyword: '',
    isSearchFocused: false,
    showSearchType: false,
    searchType: 'Area', // 默认搜索类型为区域
    searchPlaceholder: '请输入区域名称',

    // 搜索结果
    searchResults: [],
    filteredResults: [],
    hasSearched: false,
    isLoading: false,
    // 其他状态
    pageNum: 1,
    pageSize: 200,
    hasMoreData: true,
    totalCount: 0,

    // 区域选择器相关
    showAreaPicker: false,
    areaList: [],       // 当前区域列表
    areaPath: [],       // 区域选择路径
    areaUid:[],
    areaCode: [],        // 存储四级区域Code
    selectedArea: ['', '', '', ''], // 省市区街道四级
    currentLevel: 0,    // 当前选择级别: 0-省, 1-市, 2-区县, 3-街道
    mapKey: 'LXLBZ-HP66Q-PYL5K-B74JY-IFTMK-RYFV2' // 腾讯地图Key
  },

  onLoad: function () {
    // 页面初始化加载数据
    this.loadInitialData();
  },

  // 初始化数据加载
  loadInitialData: function () {
    // 这里可以加载初始数据
    const data = {
      'ProvinceId': 88888888,
      'MunicipalityId': 88888888,
      'DistrictId': 88888888,
      'TownshipStreetsId': 88888888,
      'PageIndex': this.data.pageNum,
      'PageSize': this.data.pageSize
    }
    wx.showLoading({
      title: '加载中...',
    });

    getPeopleList(data).then(res => {
      // console.log(res)
      wx.hideLoading();
      if (res && res.code === 200 && res.data) {
        this.setData({
          hasSearched: true,
          filteredResults: res.data,
          totalCount: res.total || res.data.length,
          hasMoreData: res.data.length >= this.data.pageSize,
          isLoading: false
        });
      } else {
        this.setData({
          hasSearched: true,
          filteredResults: [],
          totalCount: 0,
          hasMoreData: false,
          isLoading: false
        });
      }
    }).catch(err => {
      wx.hideLoading();
      console.error('搜索出错:', err);
      this.setData({
        hasSearched: true,
        filteredResults: [],
        totalCount: 0,
        hasMoreData: false,
        isLoading: false
      });
    })

    // this.setData({
    //   searchResults: mockData,
    //   filteredResults: mockData.slice(0, this.data.pageSize),
    //   totalCount: mockData.length,
    //   hasMoreData: mockData.length > this.data.pageSize
    // });
  },

  // 点击搜索图标切换搜索类型
  toggleSearchType: function () {
    this.setData({
      showSearchType: !this.data.showSearchType
    });
  },

  // 隐藏搜索类型下拉框
  hideSearchType: function () {
    this.setData({
      showSearchType: false
    });
  },

  // 阻止事件冒泡
  stopPropagation: function () { },

  // 选择搜索类型
  selectSearchType: function (e) {
    const type = e.currentTarget.dataset.type;
    let placeholder = '';

    // 根据不同类型设置不同的占位符
    if (type === 'Area') {
      placeholder = '请输入区域名称';
    } else if (type === 'IDCard') {
      placeholder = '请输入身份证号';
    } else if (type === 'Name') {
      placeholder = '请输入姓名';
    }

    this.setData({
      searchType: type,
      showSearchType: false,
      searchPlaceholder: placeholder,
      searchKeyword: '' // 切换类型时清空关键词
    });
  },

  // 搜索框输入事件
  onSearchInput: function (e) {
    this.setData({
      searchKeyword: e.detail.value
    });
  },

  // 搜索框获取焦点
  onInputFocus: function () {
    this.setData({
      isSearchFocused: true
    });

    // 只有在区域搜索时才显示区域选择器
    if (this.data.searchType === 'Area') {
      this.showAreaPicker();
    }
  },

  // 搜索框失去焦点
  onSearchBlur: function () {
    this.setData({
      isSearchFocused: false
    });
  },

  // 执行搜索
  onSearch: function () {
    const keyword = this.data.searchKeyword.trim();
    const searchType = this.data.searchType;

    if (!keyword) {
      wx.showToast({
        title: '请输入搜索关键词',
        icon: 'none'
      });
      return;
    }

    this.setData({
      isLoading: true,
      hasSearched: true
    });

    // 构建API请求参数
    let params = {
      'PageIndex': 1,
      'PageSize': 5000
    };

    // 根据搜索类型设置不同的参数
    if (searchType === 'Area') {
      // 提取区域信息，将已选择的区域ID添加到请求参数
      if (this.data.areaCode.length > 0) {
        const areaCodes = this.data.areaCode;
        params.ProvinceId = areaCodes[0] || 88888888;
        params.MunicipalityId = areaCodes[1] || 88888888;
        params.DistrictId = areaCodes[2] || 88888888;
        params.TownshipStreetsId = areaCodes[3] || 88888888;
      } else {
        // 如果没有选择区域，但有输入关键词，可以将关键词作为地址搜索
        params.Address = keyword;
      }
    } else if (searchType === 'IDCard') {
      params.ProvinceId = 88888888;
      params.MunicipalityId = 88888888;
      params.DistrictId = 88888888;
      params.TownshipStreetsId = 88888888;
      params.IdCard = keyword;
    } else if (searchType === 'Name') {
      params.ProvinceId = 88888888;
      params.MunicipalityId = 88888888;
      params.DistrictId = 88888888;
      params.TownshipStreetsId = 88888888;
      params.HouseHoldName = keyword;
    }
    // console.log(params)

    // 调用API进行搜索
    getPeopleList(params).then(res => {
      // console.log('搜索结果:', res);

      if (res && res.code === 200 && res.data) {
        this.setData({
          filteredResults: res.data,
          totalCount: res.total || res.data.length,
          hasMoreData: res.data.length >= this.data.pageSize,
          isLoading: false
        });

        // 如果没有结果，显示提示
        if (res.data.length === 0) {
          wx.showToast({
            title: '未找到匹配的记录',
            icon: 'none'
          });
        }
      } else {
        this.setData({
          filteredResults: [],
          isLoading: false
        });

        wx.showToast({
          title: '搜索失败，请重试',
          icon: 'none'
        });
      }

      // 震动反馈
      wx.vibrateShort({
        type: 'medium'
      });
    }).catch(err => {
      console.error('搜索出错:', err);
      this.setData({
        filteredResults: [],
        isLoading: false
      });

      wx.showToast({
        title: '搜索失败，请重试',
        icon: 'none'
      });
    });
  },

  // 点击搜索结果项
  onSelectItem: function (e) {
    const id = e.currentTarget.dataset.id;
    // 这里可以跳转到详情页或执行其他操作
    console.log('选择了人员ID:', id);
    //跳转到详情页
    wx.navigateTo({
      url: `/pages/tasks/familydetail/familydetail?id=${id}`,
      success: () => {
        console.log('跳转到详情页成功');
      },
      fail: (err) => {
        console.error('跳转到详情页失败:', err);
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none'
        });
      }
    });


  },

  // 跳转到添加页面
  goToAddPage: function () {
    wx.navigateTo({
      url: '/pages/people/add/add',
      success: () => {
        console.log('跳转到添加页面成功');
      },
      fail: (err) => {
        console.error('跳转到添加页面失败:', err);
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none'
        });
      }
    });
  },

  // 跳转到探访页面
  onVisit: function (e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/visit/edit/edit?id=${id}`,
    });
  },

  // 区域选择器相关方法
  // 显示区域选择器
  showAreaPicker: function () {
    this.setData({
      showAreaPicker: true
    });

    // 如果区域列表为空，则加载省级数据
    if (this.data.areaList.length === 0) {
      this.loadProvinces();
    }
  },

  // 隐藏区域选择器
  hideAreaPicker: function () {
    this.setData({
      showAreaPicker: false
    });
  },

  // 加载省级数据
  loadProvinces: function () {
    wx.showLoading({
      title: '加载中...',
    });

    // wx.request({
    //   url: 'https://apis.map.qq.com/ws/district/v1/list',
    //   data: {
    //     key: this.data.mapKey
    //   },
    //   success: (res) => {
    //     wx.hideLoading();
    //     if (res.data && res.data.status === 0) {
    //       const provinces = res.data.result[0];
    //       this.setData({
    //         areaList: provinces,
    //         currentLevel: 0,
    //         areaPath: [],
    //         areaCode: [88888888, 88888888, 88888888, 88888888]
    //       });
    //     } else {
    //       wx.showToast({
    //         title: res.data.message || '获取省份失败',
    //         icon: 'none'
    //       });
    //     }
    //   },
    //   fail: (err) => {
    //     wx.hideLoading();
    //     console.error('获取省份失败', err);
    //     wx.showToast({
    //       title: '网络错误',
    //       icon: 'none'
    //     });
    //   }
    // });
    const rootFatherId = 5099263649039605; // 中国的fatherId
    getSubRegion(rootFatherId).then(res => {
      wx.hideLoading();
      if (res.code === 200) {
        const provinces = res.data;
        this.setData({
          areaList: provinces,
          currentLevel: 0,
          areaPath: []
        });
      } else {
        wx.showToast({
          title: '获取省份失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      wx.hideLoading();
      wx.showToast({
        title: '网络错误',
      })
    })
  },

  // 加载下级区域
  loadChildrenAreas: function (parentId, level) {
    wx.showLoading({
      title: '加载中...',
    });
    getSubRegion(parentId).then(res => {
      wx.hideLoading();
      if (res.code === 200) {
        if (res.data && res.data.length > 0) {
          // 有下级区域
          const children = res.data;
          this.setData({
            areaList: children,
            currentLevel: level
          });
        } else {
          // 没有下级区域
          this.setData({
            areaList: [],
            currentLevel: level
          });

          // console.log('当前区域没有下级区域，level:', level);

          // 如果是区县级别(level为2)，并且没有下级街道，允许直接确认
          if (level >= 2) {
            // 提示用户可以直接确认
            wx.showToast({
              title: '请返回根地址，重新选择区域',
              icon: 'none',
              duration: 2000
            });
          }
        }
      }
    }).catch(err => {
      wx.hideLoading();
      wx.showToast({
        title: '网络错误',
      })
    });
    // wx.request({
    //   url: 'https://apis.map.qq.com/ws/district/v1/getchildren',
    //   data: {
    //     key: this.data.mapKey,
    //     id: parentId
    //   },
    //   success: (res) => {
    //     wx.hideLoading();
    //     if (res.data && res.data.status === 0) {
    //       if (res.data.result[0] && res.data.result[0].length > 0) {
    //         // 有下级区域
    //         const children = res.data.result[0];
    //         this.setData({
    //           areaList: children,
    //           currentLevel: level
    //         });
    //       } else {
    //         // 没有下级区域
    //         this.setData({
    //           areaList: [],
    //           currentLevel: level
    //         });

    //         // 如果是区县级别(level为2)或以上，并且没有下级街道，允许直接确认
    //         if (level >= 2) {
    //           // 提示用户可以直接确认
    //           wx.showToast({
    //             title: '该区域下无更多区域，可直接确认',
    //             icon: 'none',
    //             duration: 2000
    //           });
    //         }
    //       }
    //     } else {
    //       this.setData({
    //         areaList: [],
    //         currentLevel: level
    //       });
    //       wx.showToast({
    //         title: res.data.message || '获取区域失败',
    //         icon: 'none'
    //       });
    //     }
    //   },
    //   fail: (err) => {
    //     wx.hideLoading();
    //     console.error('获取下级区域失败', err);
    //     wx.showToast({
    //       title: '网络错误',
    //       icon: 'none'
    //     });
    //   }
    // });
  },

  // 选择区域
  selectArea: function (e) {
    const { uid, regionname, regioncode } = e.currentTarget.dataset;
    const { currentLevel, areaPath, areaCode,areaUid} = this.data;

    // 创建新的数据副本
    let newAreaPath = [...areaPath];
    let newSelectedArea = [...this.data.selectedArea];
    let newAreaCode = [...areaCode];
    let newAreaUid=[...areaUid];

    // 如果在中间级别选择，需要清除后续级别的数据
    if (currentLevel < newAreaPath.length) {
      newAreaPath = newAreaPath.slice(0, currentLevel);
      newAreaCode = newAreaCode.slice(0, currentLevel);
      newAreaUid = newAreaUid.slice(0, currentLevel);
      //把后面置为88888888
      for (let i = currentLevel; i < 4; i++) {
        newSelectedArea[i] = '';
        newAreaCode[i] = 88888888;
        newAreaUid[i]='';
      }
    }

    // 添加当前选择的区域
    newAreaPath.push(regionname);
    newSelectedArea[currentLevel] = regionname;
    newAreaCode[currentLevel] = regioncode;
    newAreaUid[currentLevel]=uid;

    // 清空当前级别之后的所有级别
    for (let i = currentLevel + 1; i < 4; i++) {
      newSelectedArea[i] = '';
    }

    this.setData({
      areaPath: newAreaPath,
      selectedArea: newSelectedArea,
      areaCode: newAreaCode,
      areaUid:newAreaUid
    });

    // 检查是否为直辖市 (北京、天津、上海、重庆)
    const directCities = ['北京市', '天津市', '上海市', '重庆市'];
    const isDirectCity = (currentLevel === 0 && directCities.includes(regionname));

    if (currentLevel < 3 && !isDirectCity) {
      // 普通省市区，加载下一级
      this.loadChildrenAreas(uid, currentLevel + 1);
    } else if (isDirectCity) {
      // 直辖市特殊处理 - 自动在省市级别填充相同值
      newSelectedArea[1] = regionname; // 市级也填充直辖市名称
      // this.setData({
      //   selectedArea: newSelectedArea
      // });
      // 直接加载区县级别
      this.loadChildrenAreas(uid, 1);
    } else if (currentLevel === 2 && this.data.areaList.length === 0) {
      // 如果区县下没有街道，直接确认选择
      this.confirmAreaSelection();
    } else if (currentLevel === 3) {
      // 街道级别已选择完成
      this.confirmAreaSelection();
    }
  },

  // 确认区域选择
  confirmAreaSelection: function () {
    const { selectedArea } = this.data;

    // 检查是否至少选择了一级（省市区）
    const hasMinLevels = selectedArea[0]

    if (!hasMinLevels) {
      wx.showToast({
        title: '请至少选择省市区三级',
        icon: 'none',
        duration: 2000
      });
      return;
    }

    // 过滤空值并设置显示文本
    const validAreas = selectedArea.filter(item => item);
    const areaText = validAreas.join(' ');

    this.setData({
      searchKeyword: areaText,
      showAreaPicker: false
    });

    // 自动执行搜索
    this.onSearch();
  },

  // 返回根级区域（省级）
  goToRootArea: function () {
    this.loadProvinces();
  },

  // 跳转到特定级别
  goToSpecificLevel: function (e) {
    const level = e.currentTarget.dataset.level;
    const { areaCode, areaPath ,areaUid} = this.data;
    // console.log("当前Uid",areaUid)

    if (level < areaCode.length) {
      // 设置新的区域路径
      const newAreaPath = areaPath.slice(0, level + 1);
      this.setData({
        areaPath: newAreaPath
      });

      if (level === 0) {
        // 点击省级，加载市级
        this.loadChildrenAreas(areaUid[level], 1);
        //把市级，区县，街道置为88888888
        this.setData({
          areaCode: [areaCode[0], 88888888, 88888888, 88888888],
          selectedArea: [areaPath[0], '', '', ''],
          areaUid:[areaUid[0],0,0,0]
        });
      } else if (level === 1) {
        // 点击市级，加载区县
        this.loadChildrenAreas(areaUid[level], 2);
        //把区县，街道置为88888888
        this.setData({
          areaCode: [areaCode[0], areaCode[1], 88888888, 88888888],
          selectedArea: [areaPath[0], areaPath[1], '', ''],
          areaUid:[areaUid[0],areaUid[1],0,0]
        });
      } else if (level === 2) {
        // 点击区县，加载街道
        this.loadChildrenAreas(areaUid[level], 3);
        //把街道置为88888888
        this.setData({
          areaCode: [areaCode[0], areaCode[1], areaCode[2], 88888888],
          selectedArea: [areaPath[0], areaPath[1], areaPath[2], ''],
          areaUid:[areaUid[0],areaUid[1],areaUid[2],0]
        });
      }
    }
  }
});
